export default class {
  // XHR全局对象
  XHR: XMLHttpRequest = new XMLHttpRequest();
  // 请求根路径
  url: string = "https://nntzback.jyhdkj.com/"
  // 请求头，有可能会携带token
  header: {} | undefined
  // 接受四种请求的方法，默认get请求
  method: "GET" | "POST" | "PUT" | "DELETE" = "GET"
  // 请求参数
  data: string | object = ""

  constructor(url?: string, header?: {}) {
    if (url) this.url = `${this.url}${url}`;
    this.header = header;
  }
  // 处理请求
  private handle() {
    return new Promise((resolve, reject) => {
      this.XHR.open(this.method, this.url);
      // 发送请求
      this.XHR.send();
      this.XHR.onload = () => {
        if (this.XHR.status == 400) return reject("发送请求失败了")
        // 将结果返回前端内容
        resolve(JSON.parse(this.XHR.responseText))
      }
      this.XHR.onerror = () => {
        reject("发送请求失败了")
      };
    })
  }
  get(data: { [k: string]: unknown }) {
    // 将data中数据拼接的，get请求参数成url的路径参数
    let params = "?";
    for (let k in data) {
      params += `${k}=${data[k]}&`;
    };
    // 将最后的&符号去出掉
    params = params.substr(0, params.length - 1);

    // 拼接成完整的路径
    this.url = `${this.url}${params}`

    // 开始处理并返回请求的结果
    return this.handle()
  }
}